Computing devices typically operate based on execution of instructions, and these instructions are oftentimes executed as different processes or threads. These different processes or threads operate together to provide the desired functionality for the computing device. Situations can arise in such computing devices where a particular resource of the computing device (such as memory) is shared by the different processes or threads, and different ones of the processes or threads can attempt to access the shared resource at approximately the same time. However, such accesses to a shared resource can create problems. For example, if one process or thread reads data that it expects to have been placed in memory by a second process or thread, but performs the reading before that second process or thread places the correct data in memory, then the data read by the process or thread will be incorrect. This can lead to the threads and processes operating in an incorrect and/or erratic manner, resulting in the computing device not providing the desired functionality.